// DAO/Impl/CourseTagDaoImpl.java
package com.hp.DAO.Impl;                         // 实现包

import com.hp.DAO.BaseDao;                       // 基类
import com.hp.DAO.CourseTagDao;                  // 接口：CourseTagDao
import com.hp.Model.CourseTag;                   // 实体：课程-标签关联
import com.hp.Util.RowMapper;                    // 行映射器
import com.hp.Util.SimpleJdbcTemplate;           // JDBC 模板

import java.util.List;                    // List

/** 课程-标签中间表的 JDBC 实现 */
public class CourseTagDaoImpl extends BaseDao implements CourseTagDao {
    public CourseTagDaoImpl(SimpleJdbcTemplate jdbc) { super(jdbc); } // 构造注入

    // RowMapper：ResultSet -> CourseTag
    private static final RowMapper<CourseTag> M = rs -> {
        CourseTag ct = new CourseTag();                            // 新建实体
        ct.setCourseId(rs.getLong("course_id"));                   // 课程ID
        ct.setTagId(rs.getLong("tag_id"));                         // 标签ID
        return ct;                                                 // 返回
    };

    @Override
    public List<CourseTag> listByCourse(Long courseId) {           // 按课程列出关联
        String sql = "SELECT course_id,tag_id FROM course_tag WHERE course_id=?"; // SQL
        return queryList(sql, M, courseId);                        // 执行
    }

    @Override
    public int addLink(Long courseId, Long tagId) {                // 新增关联
        String sql = "INSERT INTO course_tag (course_id,tag_id) VALUES (?,?)"; // SQL
        return execUpdate(sql, courseId, tagId);                   // 执行
    }

    @Override
    public int removeLink(Long courseId, Long tagId) {             // 删除某条关联
        String sql = "DELETE FROM course_tag WHERE course_id=? AND tag_id=?"; // SQL
        return execUpdate(sql, courseId, tagId);                   // 执行
    }

    @Override
    public int removeAllByCourse(Long courseId) {                  // 删除课程所有关联
        String sql = "DELETE FROM course_tag WHERE course_id=?";   // SQL
        return execUpdate(sql, courseId);                          // 执行
    }
}
